package com.sh.计数器限流.one;

import com.sh.RateLimiter;

public class Counter implements RateLimiter {
    private long lastRequestTime;   // 最后一次请求的时间
    private int maxRequestsPerSecond;  // 每秒最大请求数
    public int count;   // 计数器

    public Counter( int maxRequestsPerSecond ) {
        lastRequestTime = System.currentTimeMillis();  // 初始化最后一次请求的时间
        this.maxRequestsPerSecond = maxRequestsPerSecond;  // 初始化每秒最大请求数
    }

    public boolean limit(){
        long currentTime = System.currentTimeMillis();  // 当前时间   请求过来就记录时间
        if ( currentTime - lastRequestTime > 1000 ){
            count = 0;  // 如果时间差大于1秒，则将计数器清零
            lastRequestTime = currentTime;  // 更新最后一次请求的时间
        }
        if ( count<maxRequestsPerSecond){
            count++;  // 计数器加1
            return true;
        }

        return false;
    }



}
